#include <iostream>
// 对于有异常的程序，可以通过返回特殊的返回值来判断程序是否发生异常，也可以通过抛出异常的方式进行处理。
// 对于有多层函数调用的程序，异常可以在外层进行处理，但对于利用返回值判断的程序，则需要在调用时进行判断
// c++提供一个exception类，我们可以通过继承它使得我们自定义的异常类更加规范
#include <stdexcept>      // 此头文件中定义好了很多常见的异常类，如logic_error,domain_error，bad_alloc(分配错误)等
class MyException: public std::exception{
    public:
    const char* what(){      // 重写what函数
        return "my exception";
    }
};

double divide(int a,int b){
    if(b == 0){
        throw MyException();    
    }
    return a/b;
}
//
int main()
{
    try{
        divide(2,0);
    }catch(MyException& e){
        std::cout<<e.what();
    }
    return 0;
}